/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package escom.ipn.modelo.dao;
import escom.ipn.modelo.dto.XMLExterna;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
/**
 *
 * @author omar moreno
 */
public class XMLExternaDao {
     public static final String SQL_SELECT=
                        "SELECT a.id_incidente,b.nombre_incidente,c.nombre,a.lugar, "
                        +"a.fecha,a.reportante,a.lugar_reportante FROM "
                        +"INCIDENTE a INNER JOIN CAT_TIPO_INCIDENTE b ON "
                        +"b.id_tipo_incidente=a.CAT_TIPO_INCIDENTE_id_tipo_incidente INNER JOIN "
                        +"SECTOR c ON a.SECTOR_id_sector=c.id_sector where a.id_incidente=?;";
     
     public XMLExterna loadXMLObject(XMLExterna a,Connection conn)
            throws SQLException {
        PreparedStatement ps = null;
        ResultSet rs = null;
        try {
            ps = conn.prepareStatement(SQL_SELECT);
            ps.setString(1, a.getId());
            rs = ps.executeQuery();
            List resultados = getResults(rs);
            if (resultados.size() > 0) {
                return (XMLExterna)resultados.get(0);
            } else {
                return null;
            }
        } finally {
            cerrar(rs);
            cerrar(ps);
            cerrar(conn);
        }
    }
      private List getResults(ResultSet rs)
            throws SQLException {
        List results = new ArrayList();
        while (rs.next()) 
        {
            XMLExterna a = new XMLExterna();
            a.setId(rs.getString("id_incidente"));
            a.setTipo_incidente(rs.getString("nombre_incidente"));
            a.setSector(rs.getString("nombre"));
            a.setLugar(rs.getString("lugar"));
            a.setFecha(rs.getString("fecha"));
            a.setReportante(rs.getString("reportante"));
            a.setLugar_reportante(rs.getString("lugar_reportante"));
            results.add(a);
        }
        return results;
    }
    
    private void cerrar(Connection cnn) {
        if (cnn != null) {
            try {
                cnn.close();
            } catch (SQLException e) {
                //manejo del error
            }
        }
    }

    private void cerrar(PreparedStatement ps) {
        if (ps != null) {
            try {
                ps.close();
            } catch (SQLException e) {
                //manejo del error
            }
        }
    }

    private void cerrar(ResultSet rs) {
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {
                //manejo del error
            }
        }
    }    
           
}
